package skladowisko.utils;

import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

/**
 *
 * @author kedziers
 */
public class TerminalXLSReader implements TerminalDataReader
{
    private final String KONTENERY = "kontenery";
    private final String TERMINAL = "terminal";

    private Workbook wb;
    private Sheet arkuszKontenery;
    private Sheet arkuszTerminal;

    private int currentRowK = 2;
    private int currentRowT = 1;
    //wiersze w poi liczymy od 0

       
    public TerminalXLSReader(String nazwaPliku) throws Exception
    {
        wb = new HSSFWorkbook(new FileInputStream(nazwaPliku));
        arkuszTerminal = wb.getSheet(TERMINAL);
        arkuszKontenery = wb.getSheet(KONTENERY);
        //arkuszKontenerye w poi licza sie od 0

    }

    public Map<String, String> pobierzKontener()
    {
        Map<String, String> wynik = new HashMap<String, String>();

        int iloscWierszy = arkuszKontenery.getLastRowNum();
        if(currentRowK > iloscWierszy)
            return null;

        Row wiersz = arkuszKontenery.getRow(currentRowK);

        if(wiersz==null || wiersz.getCell(1).toString().isEmpty())
        {
            currentRowK++;
            return pobierzKontener();
        }

        for(int i=0; i<naglowki.length;i++)
        {
            wynik.put(naglowki[i], wiersz.getCell(i).toString());
        }

        currentRowK++;
        return wynik;
    }

    //**************************************************************************
     public Map<String, String> pobierzSkladowisko()
    {
        Map<String, String> wynik = new HashMap<String, String>();

        int iloscWierszy = arkuszTerminal.getLastRowNum();
        if(currentRowT > iloscWierszy)
            return null;

        Row wiersz = arkuszTerminal.getRow(currentRowT);

        if(wiersz==null || wiersz.getCell(0).toString().isEmpty())
        {
            currentRowT++;
            return pobierzKontener();
        }

        for(int i=0; i<skladowiskoNaglowki.length;i++)
        {
            wynik.put(skladowiskoNaglowki[i], wiersz.getCell(i).toString());
        }

        currentRowT++;
        return wynik;
    }

}
